package com.redhat.auth.log.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import com.redhat.auth.log.core.LogBizQuery;

/**
 * 描述业务的Annocation,execution
 * @author lingen.liu
 *
 */
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface LogBizExecution {

	/**
	 * 为当前方法所定义的日志提供一个自己的存储实体，默认使用database,定义值必须是被定义的存储实体
	 * @return
	 */
	public Class[] handlerClass() default LogBizQuery.class;
	
	/**
	 * 定义当前业务名称
	 * @return
	 */
	public String bizDescription();
	
	/**
	 * 定义当前业务操作类型
	 * @return
	 */
	public String bizOperationType();
	
	/**
	 * 区别error与failure
	 * failure是指业务上导致的业务失败，而error则是指由于程序出错而导致的业务失败
	 * 除去error规定的异常之外，其它的都属于failure
	 * @return
	 */
	public Class[] failureException() default Exception.class;
	
	/**
	 * 定义当前业务是由谁发起的
	 * @return
	 */
	public LogAuthor operator() default @LogAuthor;
	
	/**
	 * 定义值改变
	 * @return
	 */
    public DataValue[] dataValue() default {};
    
    /**
     * 定义记录的
     * @return
     */
    public RecordValue[] recordValue() default{};
}
